#!/usr/bin/env ruby
# -*- coding: utf-8 -*-

#
# A demo of a clustered category chart in Excel::Writer::XLSX.
#
# reverse ('(c)'), March 2015, John McNamara, jmcnamara@cpan.org
# convert to ruby by Hideo NAKAMURA, cxn03651@msj.biglobe.ne.jp
#

require 'write_xlsx'

workbook  = WriteXLSX.new('chart_clustered.xlsx')
worksheet = workbook.add_worksheet
bold      = workbook.add_format(:bold => 1)

# Add the worksheet data that the charts will refer to.
headings = ['Types',  'Sub Type',   'Value 1', 'Value 2', 'Value 3']
data = [
  ['Type 1', 'Sub Type A', 5000,      8000,      6000],
  ['',       'Sub Type B', 2000,      3000,      4000],
  ['',       'Sub Type C', 250,       1000,      2000],
  ['Type 2', 'Sub Type D', 6000,      6000,      6500],
  ['',       'Sub Type E', 500,       300,       200]
]

worksheet.write('A1', headings, bold)
worksheet.write_col('A2', data)

# Create a new chart object. In this case an embedded chart.
chart = workbook.add_chart(:type => 'column', :embedded => 1)

# Configure the series. Note, that the categories are 2D ranges (from column A
# to column B). This creates the clusters. The series are shown as formula
# strings for clarity but you can also use the array syntax. See the docs.
chart.add_series(
  :name       => '=Sheet1!$C$1',
  :categories => '=Sheet1!$A$2:$B$6',
  :values     => '=Sheet1!$C$2:$C$6'
)

chart.add_series(
  :name       => '=Sheet1!$D$1',
  :categories => '=Sheet1!$A$2:$B$6',
  :values     => '=Sheet1!$D$2:$D$6'
)

chart.add_series(
  :name       => '=Sheet1!$E$1',
  :categories => '=Sheet1!$A$2:$B$6',
  :values     => '=Sheet1!$E$2:$E$6'
)

# Set the Excel chart style.
chart.set_style(37)

# Turn off the legend.
chart.set_legend(:position => 'none')

# Insert the chart into the worksheet.
worksheet.insert_chart('G3', chart)

workbook.close
